
// 读取一个文件，压缩之
function buildAll(fileIn, fileOut, zip) {

    var fs = require('fs');
    var jsp = require("./uglify-js").parser;
    var pro = require("./uglify-js").uglify;

    if (fileIn) {
        // var origCode = '';
        // for (var i = 0; i < fileIn.length; i++) {
        // if(!genCode){
        // origCode += '\n\n// ----------'+fileIn[i]+'----------\n\n';
        // }
        // origCode += fs.readFileSync(fileIn[i], 'utf8');
        // }
        var origCode = getCodes(fileIn, undefined, zip);
        console.log('origCode !!!!!!!!!!!');
        var finalCode = '';
        if (zip) {
            var ast = jsp.parse(origCode);
            ast = pro.ast_mangle(ast);
            ast = pro.ast_squeeze(ast);
            finalCode = pro.gen_code(ast);
        } else {
            finalCode = origCode;
        }

        fs.writeFileSync(fileOut, finalCode, 'utf8');
        console.log('build success!!!');
    }
}


function getCodes(files, path, zip) {
    path = path || '';
    var origCode = '';
    var fs = require('fs');
    if (files) {
        for (var i = 0; i < files.length; i++) {
            var name = files[i];
            var filePath = path + name;
            console.log('filePath:' + filePath);
            if (name.endWith('/')) {
                //console.log('filePath:'+filePath);
                var _, _, list = fs.readdirSync(filePath);
                origCode += getCodes(list, filePath, zip);
            } else {
                if (!zip) {
                    origCode += '\n\n// ----------' + filePath + '----------\n\n';
                }
                origCode += fs.readFileSync(filePath, 'utf8');
            }
        }
    }
    return origCode;
}

String.prototype.endWith = function(str) {
    if (str == null || str == "" || this.length == 0 || str.length > this.length)
        return false;
    if (this.substring(this.length - str.length) == str)
        return true;
    else
        return false;
    return true;
}

String.prototype.startWith = function(str) {
    if (str == null || str == "" || this.length == 0 || str.length > this.length)
        return false;
    if (this.substr(0, str.length) == str)
        return true;
    else
        return false;
    return true;
}

// buildAll([
// 'src/base/',
// 'src/App.js',
// 'src/app/',
// 'src/Data.js',
// 'src/Event.js',
// 'src/Services.js',
// 'src/data/',
// 'src/service/',
// 'src/View.js',
// 'src/view/',
// 'src/Presenter.js',
// 'src/presenter/',
// 'src/Router.js',
// // init
// 'src/Init.js',
// ], 'js/up91.js', false);

buildAll([
    'src/base/',
    'src/App.js',
    'src/Event.js',
    
    'src/data/',
    'src/service/Protocol.js',
    'src/service/Api.js',
    
    'src/model/',
    'src/biz/',
    
    'src/View.js',
    'src/view/',
    'src/Presenter.js',
    'src/Router.js',
    'src/presenter/',
    
    'src/Binder.js',
    'src/binder/',
    
    'src/Init.js'
], 'js/app.js', false);

buildAll([
    'js/app.js'
], 'js/app.min.js', true);
